package com.hospital.user.cost.dao;

import com.hospital.user.cost.entity.UserCost;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserCostMapper {

    /**
     * 根据用户id查询用户余额
     *
     * @param userId 用户id
     * @return
     */
    double selMoney(@Param("userId") int userId);

    /**
     * 根据记录id查询用户的检查信息
     *
     * @param id 记录id
     * @return 用户的检查信息
     */
    UserCost selUserById(int id);

    /**
     * 根据检查类型查询价格
     *
     * @param checkType 检查类型
     * @return 检查类型的价格
     */
    double selPrice(String checkType);

    /**
     * 插入消费记录
     *
     * @param userId      用户id
     * @param consumeType 消费类型
     * @param Type        消费的详细描述
     * @param money       消费的价格
     * @return 1 添加成功
     */
    int addConsumeLog(@Param("userId") int userId, @Param("consumeType") String consumeType, @Param("Type") String Type, @Param("money") double money);


    /**
     * 缴费状态查询总记录数
     *
     * @return 放回int类型
     */
    int UserTotalPageCount();


    /**
     * 按照缴费状态查询user信息
     *
     * @return 放回List<UserEntity></>类型
     */
    public List<UserCost> UserSelect(@Param("name") String name);

    /**
     * 查询用户缴费状态
     *
     * @return 放回int类型
     */
    int UserStateSelect();

    /**
     * 根据用户id查询用户余额
     *
     * @param userId 用户id
     * @return
     */
    Double UserMoneySelect(@Param("userId") Integer userId);

    /**
     * 根据用户id查询用户缴费信息
     *
     * @param userId 用户id
     * @return
     */
    List<UserCost> userPayment(@Param("userId") Integer userId);

    /**
     * 根据用户名查询索要缴费的类型价钱
     *
     * @param userId 用户id
     * @return
     */
    Double ctPrice(Integer userId);


    /**
     * 插入缴费信息
     *
     * @return
     */
    int userPaymentInsert(@Param("userId") int userId, @Param("type") String type, @Param("money") double money);

    /**
     * 修改用户余额
     */
    int userPaymentUpdate(@Param("money") double money, @Param("userId") int userId);

    /**
     * 修改缴费状态
     *
     * @param id 记录编号
     * @return 1 修改成功
     */
    int updPayStatus(int id);

    /**
     * 根据用户id修改用户缴费状态
     *
     * @param userId 用户id
     * @return
     */
    int userStateUpdate(@Param("userId") Integer userId);

    /**
     * 根据用户id查询要缴费类型的次数
     *
     * @param userId 用户id
     * @return
     */
    int userPaymentNbm(Integer userId);
}
